package com.mtw.bbs.article.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mtw.bbs.article.pojo.entity.TopicMember;
import com.mtw.bbs.article.pojo.vo.TopicMemberVo;

import java.util.Collection;
import java.util.List;


/**
 * 话题成员
 */
public interface TopicMemberService extends IService<TopicMember> {


    /**
     * 分页获取话题成员
     *
     * @param page    当前页
     * @param topicId 话题id
     * @return 分页结果
     */
    Page<TopicMemberVo> getTopicMemberPage(int page, int size, String topicId);



    /**
     * 用户已加入的话题
     *
     * @param userId 用户id
     * @return 已加入话题的id
     */
    List<TopicMember> getTopicListByUser(String userId);


    /**
     * 用户已加入的话题
     *
     * @param userId 用户id
     * @param needDate 是否需要加入话题时间
     * @return 已加入话题的id
     */
    List<TopicMember> getTopicListByUser(String userId,boolean needDate);


    /**
     * 用户是否已加入话题
     *
     * @param userId  用户id
     * @param topicId 话题id
     * @return 身份类型
     */
    Integer userJoinedTopic(String userId, String topicId);



    /**
     * 更新题主
     *
     * @param userId  用户id
     * @param topicId 话题id
     */
    boolean updateMaster(String userId, String topicId);


    /**
     * 话题删除题主
     *
     * @param userId  用户id
     * @param topicId 话题id
     */
    boolean deleteMaster(String userId, String topicId);


    /**
     * 用户加入话题
     *
     * @param userId     用户id
     * @param topicId    话题id
     * @param memberType 身份
     */
    boolean joinTopic(String userId, String topicId, Integer memberType);


    /**
     * 更新话题成员身份
     *
     * @param userId   用户id
     * @param topicId  话题id
     * @param Identity 身份类型
     */
    boolean updateMemberType(String userId, String topicId, Integer Identity);


    /**
     * 删除话题成员
     *
     * @param userIds   用户id集合
     * @param topicId 话题id
     */
    void deleteMember(Collection<String> userIds, String topicId);




    /**
     * 删除话题成员
     */
    void deleteMember(TopicMember member);





}

